External Exam Download Resources Web Applications Games Recycle Bin
  • Normalization is the process of organizing data into smaller, more manageable tables that are protected from redundancy and anomalies.
  • Third normal form is considered the highest level necessary for most applications. Disregarding fourth normal form (AKA Boyce Codd Normal Form / BCNF) or higher levels may result in less than perfect database design, but should not affect functionality.
  • In theory, normalization is worth pursuing, but practically, many small tables may degrade performance or exceed open file and memory capacities.
  • Adhering to the third normal form, while theoretically desirable, is not always practical or necessary. It may be more feasible to apply third normal form only to data that changes frequently.
  • If you decide to violate the rules of normalization, make sure that your application anticipates any problems that could occur, such as redundant data and inconsistent dependencies.
Unnormalized form (UNF)
printer_ip print_jobs error_code error_msg
192.168.2.4 {"user101":"payload..."},
{"user102":"payload..."}
1996 paper jam
192.168.61.165 {"user999":"payload..."}
Rules to satisfy first normal form (1NF)
.. an example of repeating group is phone1 phone2 phone3 which should be separate table "customer_phone"
printer_ip print_job error_code error_msg
192.168.2.4 {"user101":"payload..."} 1996 paper jam
192.168.2.4 {"user102":"payload..."} 1996 paper jam
192.168.61.165 {"user999":"payload..."}
Rules to satisfy second normal form (2NF)
so separate tables for each entity Customers, Purchases, Products etc should be created
printer_ip error_code error_msg
192.168.2.4 1996 paper jam

printer_ip print_job
192.168.2.4 {"user101":"payload..."}
192.168.2.4 {"user102":"payload..."}
192.168.61.165 {"user999":"payload..."}
Rules to satisfy third normal form (3NF)
.. this is also known as eliminating "transitive functional dependencies", such as an exam grade depending on a percentage score in a Results table
printer_ip error_code
192.168.2.4 1996

printer_ip print_job
192.168.2.4 {"user101":"payload..."}
192.168.2.4 {"user102":"payload..."}
192.168.61.165 {"user999":"payload..."}

error_code error_msg
1996 paper jam

"The key (1NF), the whole key (2NF), and nothing but the key (3NF), so help me Codd."